The concept of using application routers was introduced in the Java Specification Request (JSR) 289 specification, the entire contents of which are hereby incorporated herein by reference. The application router is responsible for application composition. Within this context, application composition is the process of chaining multiple applications together in a logical sequence. When multiple applications are chained together, the chained application processes a given Session Initiation Protocol (SIP) message and once it is done processing, the chained application passes the SIP message to the next application in the chain.
JSR 289 states that it is the role of the developer to define the application composition by providing an application router implementation. Currently under JSR 289, the application router implementation is specific to the applications in the chain. Today, there is not a standard way to dynamically deploy multiple applications and have the application router know when to invoke a chained application on receipt of a SIP request. The result is that the code to the application router must be modified or upgraded as new applications are added to the chain. This can result in slow adaptation to new applications and unnecessary work in recoding/upgrading the application router as new applications become available. What is needed is a way to dynamically deploy new applications without having to update or modify the application router.